function json2Form(json) {
    var str = [];
    for (var p in json) {
        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(json[p]));
    }
    return str.join("&");
}

function throttle(fn, gapTime) {
    if (gapTime == null || gapTime == undefined) {
        gapTime = 1500
    }

    let _lastTime = null

    // 返回新的函数
    return function() {
        let _nowTime = +new Date()
        if (_nowTime - _lastTime > gapTime || !_lastTime) {
            fn.apply(this, arguments) //将this和参数传给原函数
            _lastTime = _nowTime
        }
    }
}

function formatTime(dataStr) {
    var date = Date.parse(new Date(dataStr));
    return date;
}

function formatNumber(n) {
    n = n.toString()
    return n[1] ? n : '0' + n
}

/** 
 * 时间戳转化为年 月 日 时 分 秒 
 * number: 传入时间戳 
 * format：返回格式，支持自定义，但参数必须与formateArr里保持一致 
 */
function formatTimeTwo(num, format) {

    var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
    var returnArr = [];

    var date = new Date(parseInt(num));
    returnArr.push(date.getFullYear());
    returnArr.push(formatNumber(date.getMonth() + 1));
    returnArr.push(formatNumber(date.getDate()));

    returnArr.push(formatNumber(date.getHours()));
    returnArr.push(formatNumber(date.getMinutes()));
    returnArr.push(formatNumber(date.getSeconds()));

    for (var i in returnArr) {
        format = format.replace(formateArr[i], returnArr[i]);
    }
    return format;
}

/**
 * 用于判断空，Undefined String Array Object
 */
function isBlank(str) {
    if (Object.prototype.toString.call(str) === '[object Undefined]') { //空
        return true
    } else if (
        Object.prototype.toString.call(str) === '[object String]' ||
        Object.prototype.toString.call(str) === '[object Array]') { //字条串或数组
        return str.length == 0 ? true : false
    } else if (Object.prototype.toString.call(str) === '[object Object]') {
        return JSON.stringify(str) == '{}' ? true : false
    } else {
        return true
    }

}

//上传方法
function upload_file_server(url, that, upload_picture_list, j) {
    console.log(j, upload_picture_list[j]['path'])
        //上传返回值
    const upload_task = wx.uploadFile({
            // 模拟https
            url: url, //需要用HTTPS，同时在微信公众平台后台添加服务器地址  
            filePath: upload_picture_list[j]['path'], //上传的文件本地地址    
            name: 'file',
            formData: {
                'file': j
            },
            header: {
                "Content-Type": "multipart/form-data"
            },
            //附近数据，这里为路径     
            success: function(res) {
                // console.log(res)

                var data = JSON.parse(res.data);
                console.log(data)
                    // //字符串转化为JSON  
                if (data.code == 200) {
                    var filename = data.data.url //存储地址 显示
                    console.log(filename)
                    upload_picture_list[j]['path_server'] = filename
                } else {
                    upload_picture_list[j]['path_server'] = filename
                }
                console.log(upload_picture_list)
                that.setData({
                    upload_picture_list: upload_picture_list
                });

                wx.setStorageSync('imgs', upload_picture_list);
            }
        })
        //上传 进度方法
    upload_task.onProgressUpdate((res) => {
        console.log(res)
        upload_picture_list[j]['upload_percent'] = res.progress
        that.setData({
            upload_picture_list: upload_picture_list
        });
    });
}

module.exports = {
    json2Form: json2Form,
    throttle: throttle,
    formatTime: formatTime, // 日期转时间戳
    formatTimeTwo: formatTimeTwo, // 时间戳转日期
    upload_file_server: upload_file_server,
    String: {
        isBlank: isBlank
    }
}